home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 145
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin
/
tools
/
sharp
/
sxwork3.lzh
/
サンプル実用編
/
ペイント
/
GPLUPE.C
< prev
next >
Wrap
Text File
|
1994-03-10
|
19KB
|
568 lines
/******************************************************************************
* gplupe.c: ルーペ(拡大編集)サブウィンドウ関係のモジュール
******************************************************************************
* Workroom SX-68K Sample Program Copyright 1994 SHARP
*/
#include <stdio.h>
#include <console.h> /* コンソール系マネージャを利用するときに必要 */
#include <event.h> /* イベントマンを利用するときに必要 */
#include <sxgraph.h> /* グラフ系マネージャを利用するときに必要 */
#include <dialog.h> /* ダイアログマンを利用するときに必要 */
#include "gpaint.h" /* このプログラム固有のヘッダファイル */
/* ルーペウィンドウの内部レクタングル */
static Rect rcLupeDraw = { 1, WS_INSIDE_Y, 401, WS_INSIDE_Y + 400 };
/******************************************************************************
* moveLupeRect(): 拡大範囲のレクタングルを移動する
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
* LPoint lpt マウスレフトダウン時の座標
*/
void moveLupeRect(ComVal *pcv, LPoint lpt)
{
short work;
Point opt, npt, dpt;
Rect rc;
/* メインウィンドウをカレントグラフにする */
/* GMSetGraph(&pcv->windowPtr->graph); */
if (pcv->subwinPtr[LUPE] == NULL || !GMPtInRect(&pcv->rcLupe, lpt))
return;
/* メインウィンドウをテキストタイプでカレントグラフにする */
setGraph(pcv->windowPtr, G_TXT);
GMAPage(G_PAGE0 | G_PAGE1); /* アクセスページを0と1ページにする */
OldFC = GMForeColor(G_BLACK); /* フォアグラウンドカラーを黒にする */
OldPM = GMPenMode(G_XOR); /* ペンモードをXORにする */
/* ペンサイズを(1,1)に設定する */
OldPS.x_y = GMPenSize(LONGWORD(1, 1));
/* 拡大範囲レクタングルの初期のレクタングルを設定する */
rc = pcv->rcLupe;
opt.x_y = lpt;
npt.x_y = lpt;
while (EMLStill()) {
/* マウスが移動された場合のみ拡大レクタングルを書き換える */
if (opt.x_y != npt.x_y) {
/* 前回のレクタングルを消して */
GMFrameRect(&rc);
/* 新たなレクタングルの算出 */
dpt.p.x = npt.p.x - opt.p.x;
dpt.p.y = npt.p.y - opt.p.y;
GMSlideRect(&rc, dpt.x_y);
/* レクタングルを調節する */
work = 100 - (LOWWORD(pcv->toolStat[4]) * 50);
if (rc.d.right > pcv->pictSize.d.right) {
rc.d.left = pcv->pictSize.d.right - work;
rc.d.right = pcv->pictSize.d.right;
}
if (rc.d.bottom > pcv->pictSize.d.bottom) {
rc.d.top = pcv->pictSize.d.bottom - work;
rc.d.bottom = pcv->pictSize.d.bottom;
}
if (rc.d.left < 0) {
rc.d.left = 0;
rc.d.right = work;
}
if (rc.d.top < 0) {
rc.d.top = 0;
rc.d.bottom = work;
}
/* 再度レクタングルを表示する */
GMFrameRect(&rc);
}
opt = npt;
/* マウスの現在位置を取得する */
npt.x_y = EMMSLoc();
}
/* フォアグラウンドカラーを元に戻す */
GMForeColor(OldFC);
/* ペンモードを元に戻す */
GMPenMode(OldPM);
/* ペンサイズを元に戻す */
GMPenSize(OldPS.x_y);
/* メインウィンドウをグラフィックタイプでカレントグラフにする */
setGraph(pcv->windowPtr, G_GRP);
if (!GMEqualRect(&rc, &pcv->rcLupe)) {
/* 拡大範囲レクタングルを更新する */
pcv->rcLupe = rc;
/* ルーペウィンドウの内部を描く */
drawLupeRect(pcv);
}
/* メインウィンドウをカレントグラフにする */
GMSetGraph(&pcv->windowPtr->graph);
}
/******************************************************************************
* dispLupeRect(): 拡大範囲のレクタングルを表示(消去)する
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
*/
void dispLupeRect(ComVal *pcv)
{
/* ルーペウィンドウが表示されていないか、ファイル入出力疑似ダイアログが
でているか、サイズ設定疑似ダイアログがでていれば何もしない */
if (pcv->subwinPtr[LUPE] == NULL
|| pcv->fileMode != 0 || pcv->sizeDlg != 0)
return;
/* メインウィンドウをテキストタイプでカレントグラフにする */
setGraph(pcv->windowPtr, G_TXT);
GMAPage(G_PAGE0 | G_PAGE1); /* アクセスページを0と1ページにする */
OldFC = GMForeColor(G_BLACK); /* フォアグラウンドカラーを黒にする */
OldPM = GMPenMode(G_XOR); /* ペンモードをXORにする */
/* ペンサイズを(1,1)に設定する */
OldPS.x_y = GMPenSize(LONGWORD(1, 1));
GMFrameRect(&pcv->rcLupe); /* レクタングルを表示(消去)する */
GMForeColor(OldFC); /* フォアグラウンドカラーを元に戻す */
GMPenMode(OldPM); /* ペンモードを元に戻す */
GMPenSize(OldPS.x_y); /* ペンサイズを元に戻す */
}
/******************************************************************************
* lupeMsLDown(): ルーペウィンドウでのマウス左ダウン処理
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
*/
void lupeMsLDown(ComVal *pcv)
{
LPoint lpt;
/* ファイル入出力疑似ダイアログが表示されているかまたは
サイズ設定疑似ダイアログが表示されていたら */
if (pcv->fileMode > 0 || pcv->sizeDlg > 0)
/* 何もしない */
return;
/* 入力座標をローカル座標系に変換する */
lpt = GMGlobalToLocal(pcv->event.ev.where.x_y);
if (!(GMPtInRect(&rcLupeDraw, lpt)))
return;
/* UNDOのためにデータをセーブする */
saveDataForUndo(pcv);
switch (HIWORD(pcv->toolStat[4])) {
case 0: /* ルーペのモードがペンなら */
paintLupePen(pcv);
break;
case 1: /* ルーペのモードが塗りつぶしなら */
paintLupeOfDomain(pcv);
break;
}
if (!pcv->editFlag) /* まだ編集されてないか? */
pcv->editFlag = TRUE; /* 編集フラグをセットする */
}
/******************************************************************************
* paintLupePen(): ルーペ内でのペンでのペイント処理
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
*/
void paintLupePen(ComVal *pcv)
{
Point ptin, ptl, pt, npt, opt, wpt[2];
Rect rc, lrc;
wpt[0] = pcv->penSize;
wpt[1].x_y = 0;
/* 入力座標をローカル座標系に変換する */
ptin.x_y = GMGlobalToLocal(pcv->event.ev.where.x_y);
ptl.p.x = (ptin.p.x - 1) / pcv->lupeRate;
ptl.p.y = (ptin.p.y - WS_INSIDE_Y) / pcv->lupeRate;
/* オフスクリーンの描画座標を求める */
pt.p.x = ptl.p.x + pcv->rcLupe.d.left;
pt.p.y = ptl.p.y + pcv->rcLupe.d.top;
/* 絵と拡大レクタングルの共通部分を求める */
GMAndRect(&rc, &pcv->rcLupe, &pcv->pictSize);
/* 点が絵と拡大レクタングルの共通部分になければ何もしない */
if (!GMPtInRect(&rc, pt.x_y))
return;
/* 拡大レクタングルの範囲になるよう調節する */
ajustPoint(&pt, wpt, &rc);
/* ルーペウィンドウの描画座標を求める */
ptl.p.x = (pt.p.x - pcv->rcLupe.d.left) * pcv->lupeRate;
ptl.p.y = (pt.p.y - pcv->rcLupe.d.top) * pcv->lupeRate;
ptl.p.x += 1;
ptl.p.y += WS_INSIDE_Y;
/* ビッツを使用するためにメモリをロックする */
GMLockBits(pcv->offBitsHdl[pcv->offIdx]); /* オフスクリーン用ビッツ */
/* オフスクリーン用グラフをカレントグラフにする */
GMSetGraph(&pcv->offGraph);
pcv->offGraph.bmap = &(*pcv->offBitsHdl[pcv->offIdx])->bmap;
/* 転送レクタングルを設定する */
lrc.l.l_t = 0;
lrc.d.right = pcv->penSize.p.x * pcv->lupeRate;
lrc.d.bottom = pcv->penSize.p.y * pcv->lupeRate;
GMSlideRect(&lrc, ptl.x_y);
rc.l.l_t = 0;
rc.l.r_b = pcv->penSize.x_y;
GMSlideRect(&rc, pt.x_y);
GMPenSize(pcv->penSize.x_y); /* ペンサイズを設定する */
/* フォアグラウンドカラーをセットする */
/* 選択中のパレット番号セット*/
setFBColor(pcv);
/* マウスの押された場所を描画する */
GMMove(pt.x_y);
GMLine(pt.x_y);
/* メインウィンドウをグラフィックタイプでカレントグラフにする */
setGraph(pcv->windowPtr, G_GRP);
/* マウスの押された場所を描画する */
/* オフスクリーンからコピーして描画する */
GMTransImg(&(*pcv->offBitsHdl[pcv->offIdx])->bmap, pcv->windowPtr->graph.bmap, &rc, &rc);
/* ルーぺウィンドウをグラフィックタイプでカレントグラフにする */
setGraph(&pcv->subwinPtr[LUPE]->win, G_GRP);
/* オフスクリーンからコピーして描画する */
GMTransImg(&(*pcv->offBitsHdl[pcv->offIdx])->bmap, pcv->subwinPtr[LUPE]->win.graph.bmap, &rc, &lrc);
opt = pt;
npt = pt;
while (EMLStill()) {
/* マウスが移動された場合のみ直線を表示する */
if (opt.x_y != npt.x_y) {
/* オフスクリーン用グラフをカレントグラフにする */
GMSetGraph(&pcv->offGraph);
pcv->offGraph.bmap = &(*pcv->offBitsHdl[pcv->offIdx])->bmap;
/* 転送レクタングルを設定する */
lrc.l.l_t = 0;
lrc.d.right = pcv->penSize.p.x * pcv->lupeRate;
lrc.d.bottom = pcv->penSize.p.y * pcv->lupeRate;
GMSlideRect(&lrc, ptl.x_y);
rc.l.l_t = 0;
rc.l.r_b = pcv->penSize.x_y;
GMSlideRect(&rc, npt.x_y);
/* オフスクリーンに描画する */
GMMove(npt.x_y);
GMLine(npt.x_y);
/* メインウィンドウをカレントグラフにする */
GMSetGraph(&pcv->windowPtr->graph);
/* オフスクリーンからコピーして描画する */
GMTransImg(&(*pcv->offBitsHdl[pcv->offIdx])->bmap, pcv->windowPtr->graph.bmap, &rc, &rc);
/* カレントグラフをルーペウィンドウにする */
GMSetGraph(&pcv->subwinPtr[LUPE]->win.graph);
/* オフスクリーンからコピーして描画する */
GMTransImg(&(*pcv->offBitsHdl[pcv->offIdx])->bmap, pcv->subwinPtr[LUPE]->win.graph.bmap, &rc, &lrc);
}
opt = npt;
/* カレントグラフをルーペウィンドウにする */
GMSetGraph(&pcv->subwinPtr[LUPE]->win.graph);
/* マウスの現在位置を取得する */
ptl.x_y = EMMSLoc();
ptl.p.x = (ptl.p.x - 1) / pcv->lupeRate;
ptl.p.y = (ptl.p.y - WS_INSIDE_Y) / pcv->lupeRate;
/* オフスクリーンの描画座標を求める */
npt.p.x = ptl.p.x + pcv->rcLupe.d.left;
npt.p.y = ptl.p.y + pcv->rcLupe.d.top;
/* 拡大レクタングルの範囲になるよう調節する */
ajustPoint(&npt, wpt, &pcv->rcLupe);
/* ルーペウィンドウの描画座標を求める */
ptl.p.x = (npt.p.x - pcv->rcLupe.d.left) * pcv->lupeRate;
ptl.p.y = (npt.p.y - pcv->rcLupe.d.top) * pcv->lupeRate;
ptl.p.x += 1;
ptl.p.y += WS_INSIDE_Y;
}
/* ビッツのメモリをアンロックする */
GMUnlockBits(pcv->offBitsHdl[pcv->offIdx]);
/* フォアグラウンドカラーを元に戻す */
GMForeColor(OldFC);
/* 描画モードを元に戻す */
GMPenMode(OldPM);
/* ペンモードを元に戻す */
GMPenMode(OldPM);
/* ペンサイズを元に戻す */
GMPenSize(OldPS.x_y);
}
/******************************************************************************
* paintLupeOfDomain(): ルーペ内の指定された点と同じ色の領域の塗りつぶし
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
*/
void paintLupeOfDomain(ComVal *pcv)
{
int errCode;
Point pt, pt2;
Rect rc, lrc;
Region **rgnHdl;
Bits **lBitsHdl;
/* 入力座標をローカル座標系に変換する */
pt.x_y = GMGlobalToLocal(pcv->event.ev.where.x_y);
pt2.p.x = (pt.p.x - 1) / pcv->lupeRate;
pt2.p.y = (pt.p.y - WS_INSIDE_Y) / pcv->lupeRate;
/* オフスクリーンの描画座標を求める */
pt.p.x = pt2.p.x + pcv->rcLupe.d.left;
pt.p.y = pt2.p.y + pcv->rcLupe.d.top;
/* 絵と拡大レクタングルの共通部分を求める */
GMAndRect(&rc, &pcv->rcLupe, &pcv->pictSize);
/* 点が絵と拡大レクタングルの共通部分になければ何もしない */
if (!GMPtInRect(&rc, pt.x_y))
return;
lrc.l.l_t = 0;
lrc.d.right = pcv->rcLupe.d.right - pcv->rcLupe.d.left;
lrc.d.bottom = pcv->rcLupe.d.bottom - pcv->rcLupe.d.top;
/* 使用するリージョンハンドルを取得する */
rgnHdl = GMNewRgn();
if (rgnHdl == NULL) {
DMError(D_CONFIRM, "メモリが確保できません。");
return;
}
/* ワーク用ビッツハンドルを確保する */
lBitsHdl = GMNewBits(G_GR2, &lrc, 0);
if (lBitsHdl == NULL) {
GMDisposeRgn(rgnHdl); /* リージョンハンドルを解放する */
DMError(D_CONFIRM, "メモリが確保できません。");
return;
}
/* ビッツを使用するためにハンドルをロックする */
GMLockBits(pcv->offBitsHdl[pcv->offIdx]); /* オフスクリーン用ビッツ */
GMLockBits(lBitsHdl); /* ワークビッツ */
/* オフスクリーンのビットマップからワークのビットマップにコピーする */
GMCopy(&(*pcv->offBitsHdl[pcv->offIdx])->bmap, &(*lBitsHdl)->bmap,
&pcv->rcLupe, &lrc, G_PSET, NULL);
/* 同じ色の点の領域をリージョンに変換する */
errCode = GMPaintRgn(rgnHdl, &(*lBitsHdl)->bmap, pt2.x_y);
if (errCode < 0) {
GMDisposeRgn(rgnHdl); /* リージョンハンドルを解放する */
/* ビッツハンドルをアンロックする */
GMUnlockBits(pcv->offBitsHdl[pcv->offIdx]);
GMUnlockBits(lBitsHdl);
/* ワーク用のビッツハンドルを廃棄する */
GMDisposeBits(lBitsHdl);
DMError(D_CONFIRM, "メモリが確保できません。");
return;
}
pt.x_y = pcv->rcLupe.l.l_t;
/* リージョン座標をオフスクリーンの座標系に設定する */
GMSlideRgn(rgnHdl, pcv->rcLupe.l.l_t);
/* オフスクリーン用グラフをカレントグラフにする */
GMSetGraph(&pcv->offGraph);
pcv->offGraph.bmap = &(*pcv->offBitsHdl[pcv->offIdx])->bmap;
/* リージョンを囲むレクタングルの座標をrcに設定する */
rc = (*rgnHdl)->bounds;
/* 転送先のルーペウィンドウのレクタングルをlrcに設定する */
lrc.d.left = 1 + (rc.d.left - pcv->rcLupe.d.left) * pcv->lupeRate;
lrc.d.right = lrc.d.left + (rc.d.right - rc.d.left) * pcv->lupeRate;
lrc.d.top = WS_INSIDE_Y + (rc.d.top - pcv->rcLupe.d.top) * pcv->lupeRate;
lrc.d.bottom = lrc.d.top + (rc.d.bottom - rc.d.top) * pcv->lupeRate;
/* フォア/バックグラウンドカラーをセットする */
setFBColor(pcv);
/* 領域を塗りつぶす */
GMFillRgn(rgnHdl);
/* メインウィンドウをグラフィックタイプでカレントグラフにする */
setGraph(pcv->windowPtr, G_GRP);
/* オフスクリーンからコピーして描画する */
GMTransImg(&(*pcv->offBitsHdl[pcv->offIdx])->bmap, pcv->windowPtr->graph.bmap, &rc, &rc);
/* ルーペウィンドウをグラフィックタイプでカレントグラフにする */
setGraph(&pcv->subwinPtr[LUPE]->win, G_GRP);
/* オフスクリーンからコピーして描画する */
GMTransImg(&(*pcv->offBitsHdl[pcv->offIdx])->bmap, pcv->subwinPtr[LUPE]->win.graph.bmap, &rc, &lrc);
/* ビッツハンドルをアンロックする */
GMUnlockBits(pcv->offBitsHdl[pcv->offIdx]);
GMUnlockBits(lBitsHdl);
GMDisposeBits(lBitsHdl); /* ワーク用のビッツハンドルを解放する */
GMDisposeRgn(rgnHdl); /* リージョンハンドルを解放する */
}
/******************************************************************************
* drawLupeWnd(): ルーペウィンドウを描画する
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
*/
void drawLupeWnd(ComVal *pcv)
{
drawSubwin(pcv, 3); /* サブウィンドウを描画する */
drawLupeSubIcon(pcv);
/* ルーペウィンドウの中を描画する */
drawLupeRect(pcv);
}
/******************************************************************************
* drawLupeSubIcon(): ルーペウィンドウタイトル部のサブアイコンを描画する
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
*/
void drawLupeSubIcon(ComVal *pcv)
{
/* ルーペウィンドウをテキストタイプでカレントグラフにする */
setGraph(&pcv->subwinPtr[LUPE]->win, G_TXT);
GMAPage(G_PAGE0 | G_PAGE1); /* アクセスページを0と1ページにする */
/* ペン */
if (HIWORD(pcv->toolStat[4]) == 0)
/* ペンのビットイメージを表示する */
GMPutRImg(*pcv->tlBtnImg[17], LONGWORD(320, 2));
/* 塗りつぶし */
else if (HIWORD(pcv->toolStat[4]) == 1)
/* 塗りつぶしのビットイメージを表示する */
GMPutRImg(*pcv->tlBtnImg[18], LONGWORD(320, 2));
/* ルーペの倍率によってアイコンの表示を変える */
if (LOWWORD(pcv->toolStat[4]) == 0) /* 4倍 */
/* ×4のビットイメージを表示する */
GMPutRImg(*pcv->tlBtnImg[19], LONGWORD(340, 2));
else if (LOWWORD(pcv->toolStat[4]) == 1) /* 8倍 */
/* ×8のビットイメージを表示する */
GMPutRImg(*pcv->tlBtnImg[20], LONGWORD(340, 2));
}
/******************************************************************************
* drawLupeRect(): ルーペウィンドウの内部を描画する
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
*/
void drawLupeRect(ComVal *pcv)
{
Rect rc, rc_p, lrc_p;
/* ルーペウィンドウをカレントグラフにする */
GMSetGraph(&pcv->subwinPtr[LUPE]->win.graph);
/* 絵と拡大レクタングルの共通部分を求める */
GMAndRect(&rc_p, &pcv->rcLupe, &pcv->pictSize);
/* ルーペウィンドウに描画する大きさを求める */
lrc_p.l.l_t = rcLupeDraw.l.l_t;
lrc_p.d.right = lrc_p.d.left + (rc_p.d.right - rc_p.d.left) * pcv->lupeRate;
lrc_p.d.bottom = lrc_p.d.top + (rc_p.d.bottom - rc_p.d.top) * pcv->lupeRate;
/* ルーペウィンドウをテキストタイプでカレントグラフにする */
setGraph(&pcv->subwinPtr[LUPE]->win, G_TXT);
GMAPage(G_ALLPAGE); /* アクセスページを全ページにする */
OldPM = GMPenMode(G_PSET);
/* フォアグラウンドカラーをライトグレーにする */
OldFC = GMForeColor(G_LGRAY);
/* 絵がルーペウィンドウよりも小さいときは余った部分をライトグレーで塗る */
if (lrc_p.d.right < rcLupeDraw.d.right) {
rc = rcLupeDraw;
rc.d.left = lrc_p.d.right;
/* ライトグレーでウィンドウを塗りつぶす */
GMFillRect(&rc);
}
if (lrc_p.d.bottom < rcLupeDraw.d.bottom) {
rc = rcLupeDraw;
rc.d.top = lrc_p.d.bottom;
/* ライトグレーでウィンドウを塗りつぶす */
GMFillRect(&rc);
}
GMForeColor(G_THRU); /* フォアグラウンドカラーは透明色 */
/* 透明色でウィンドウを塗りつぶす */
GMFillRect(&lrc_p);
GMForeColor(OldFC);
GMPenMode(OldPM);
/* ルーペウィンドウをグラフィックタイプでカレントグラフにする */
setGraph(&pcv->subwinPtr[LUPE]->win, G_GRP);
GMLockBits(pcv->offBitsHdl[pcv->offIdx]);
pcv->offGraph.bmap = &(*pcv->offBitsHdl[pcv->offIdx])->bmap;
GMTransImg(&(*pcv->offBitsHdl[pcv->offIdx])->bmap, pcv->subwinPtr[LUPE]->win.graph.bmap, &pcv->rcLupe, &rcLupeDraw);
GMUnlockBits(pcv->offBitsHdl[pcv->offIdx]);
}
/******************************************************************************
* changeLupeRate(): ルーペの拡大倍率を変更
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
* int mode 拡大倍率
* = 0: 4倍
* = 1: 8倍
*/
void changeLupeRate(ComVal *pcv, int mode)
{
/* ルーペウィンドウをカレントグラフにする */
GMSetGraph(&pcv->subwinPtr[LUPE]->win.graph);
/* ルーペウィンドウにアイコンを描く */
drawLupeSubIcon(pcv);
/* 倍率の選択ならば */
if (pcv->lupeStat == 0) {
/* 拡大エリアの消去 */
dispLupeRect(pcv);
if (mode == 1) {
/* 拡大率を8倍にする */
pcv->lupeRate = 8;
/* 拡大範囲レクタングルを縮小する */
pcv->rcLupe.d.right -= 50;
pcv->rcLupe.d.bottom -= 50;
} else {
/* 拡大率を4倍にする */
pcv->lupeRate = 4;
/* 拡大範囲レクタングルを拡大する */
pcv->rcLupe.d.right += 50;
pcv->rcLupe.d.bottom += 50;
/* レクタングルの右端、下端がウィンドウの外なら */
/* レクタングルがウィンドウ内に入るように調節する */
if (pcv->rcLupe.d.right > pcv->pictSize.d.right) {
pcv->rcLupe.d.right = pcv->pictSize.d.right;
pcv->rcLupe.d.left = pcv->pictSize.d.right - 100;
}
if (pcv->rcLupe.d.bottom > pcv->pictSize.d.bottom) {
pcv->rcLupe.d.bottom = pcv->pictSize.d.bottom;
pcv->rcLupe.d.top = pcv->pictSize.d.bottom - 100;
}
if (pcv->rcLupe.d.left < 0) {
pcv->rcLupe.d.left = 0;
pcv->rcLupe.d.right = 100;
}
if (pcv->rcLupe.d.top < 0) {
pcv->rcLupe.d.top = 0;
pcv->rcLupe.d.bottom = 100;
}
}
dispLupeRect(pcv); /* 拡大エリアの表示 */
drawLupeRect(pcv); /* ルーペウィンドウの内部を描く */
}
}